GtkEntry: Add input purpose and hints
authorMatthias Clasen <mclasen@redhat.com>
Thu, 16 Aug 2012 18:27:51 +0000 (14:27 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 20 Aug 2012 22:54:21 +0000 (18:54 -0400)
Add input-purpose and input-hints properties to GtkEntry,
and pass these on to GtkIMContext.

https://bugzilla.gnome.org/show_bug.cgi?id=651244

gtk/gtk.symbols
gtk/gtkentry.c
gtk/gtkentry.h

index 84002789e8be40897bac2afb6ce4a37d75cea5f4..b3e37d0995518ac9386b7e915b4bb79640ba3487 100644 (file)
@@ -908,6 +908,8 @@ gtk_entry_get_icon_storage_type
 gtk_entry_get_icon_tooltip_markup
 gtk_entry_get_icon_tooltip_text
 gtk_entry_get_inner_border
+gtk_entry_get_input_hints
+gtk_entry_get_input_purpose
 gtk_entry_get_invisible_char
 gtk_entry_get_layout
 gtk_entry_get_layout_offsets
@@ -945,6 +947,8 @@ gtk_entry_set_icon_sensitive
 gtk_entry_set_icon_tooltip_markup
 gtk_entry_set_icon_tooltip_text
 gtk_entry_set_inner_border
+gtk_entry_set_input_hints
+gtk_entry_set_input_purpose
 gtk_entry_set_invisible_char
 gtk_entry_set_max_length
 gtk_entry_set_overwrite_mode
index 6d9491e07d07d2bc9ef1974e1d2cb7cd0de52776..de43d97b9a229db1e921cb97ba490f53dedabf17 100644 (file)
@@ -308,7 +308,9 @@ enum {
   PROP_IM_MODULE,
   PROP_EDITING_CANCELED,
   PROP_PLACEHOLDER_TEXT,
-  PROP_COMPLETION
+  PROP_COMPLETION,
+  PROP_INPUT_PURPOSE,
+  PROP_INPUT_HINTS
 };
 
 static guint signals[LAST_SIGNAL] = { 0 };
@@ -1359,6 +1361,25 @@ gtk_entry_class_init (GtkEntryClass *class)
                                                         GTK_TYPE_ENTRY_COMPLETION,
                                                         GTK_PARAM_READWRITE));
 
+  g_object_class_install_property (gobject_class,
+                                   PROP_INPUT_PURPOSE,
+                                   g_param_spec_enum ("input-purpose",
+                                                      P_("Purpose"),
+                                                      P_("Purpose of the text field"),
+                                                      GTK_TYPE_INPUT_PURPOSE,
+                                                      GTK_INPUT_PURPOSE_FREE_FORM,
+                                                      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class,
+                                   PROP_INPUT_HINTS,
+                                   g_param_spec_flags ("input-hints",
+                                                       P_("hints"),
+                                                       P_("Hints for the text field behaviour"),
+                                                       GTK_TYPE_INPUT_HINTS,
+                                                       GTK_INPUT_HINT_NONE,
+                                                       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+
   /**
    * GtkEntry:icon-prelight:
    *
@@ -2162,6 +2183,14 @@ gtk_entry_set_property (GObject         *object,
       gtk_entry_set_completion (entry, GTK_ENTRY_COMPLETION (g_value_get_object (value)));
       break;
 
+    case PROP_INPUT_PURPOSE:
+      gtk_entry_set_input_purpose (entry, g_value_get_enum (value));
+      break;
+
+    case PROP_INPUT_HINTS:
+      gtk_entry_set_input_hints (entry, g_value_get_flags (value));
+      break;
+
     case PROP_SCROLL_OFFSET:
     case PROP_CURSOR_POSITION:
     default:
@@ -2386,6 +2415,14 @@ gtk_entry_get_property (GObject         *object,
       g_value_set_object (value, G_OBJECT (gtk_entry_get_completion (entry)));
       break;
 
+    case PROP_INPUT_PURPOSE:
+      g_value_set_enum (value, gtk_entry_get_input_purpose (entry));
+      break;
+
+    case PROP_INPUT_HINTS:
+      g_value_set_flags (value, gtk_entry_get_input_hints (entry));
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -10295,3 +10332,65 @@ _gtk_entry_set_is_cell_renderer (GtkEntry *entry,
 {
   entry->priv->is_cell_renderer = is_cell_renderer;
 }
+
+void
+gtk_entry_set_input_purpose (GtkEntry        *entry,
+                             GtkInputPurpose  purpose)
+
+{
+  g_return_if_fail (GTK_IS_ENTRY (entry));
+
+  if (gtk_entry_get_input_purpose (entry) != purpose)
+    {
+      g_object_set (G_OBJECT (entry->priv->im_context),
+                    "input-purpose", purpose,
+                    NULL);
+
+      g_object_notify (G_OBJECT (entry), "input-purpose");
+  }
+}
+
+GtkInputPurpose
+gtk_entry_get_input_purpose (GtkEntry *entry)
+{
+  GtkInputPurpose purpose;
+
+  g_return_val_if_fail (GTK_IS_ENTRY (entry), GTK_INPUT_PURPOSE_FREE_FORM);
+
+  g_object_get (G_OBJECT (entry->priv->im_context),
+                "input-purpose", &purpose,
+                NULL);
+
+  return purpose;
+}
+
+void
+gtk_entry_set_input_hints (GtkEntry      *entry,
+                           GtkInputHints  hints)
+
+{
+  g_return_if_fail (GTK_IS_ENTRY (entry));
+
+  if (gtk_entry_get_input_hints (entry) != hints)
+    {
+      g_object_set (G_OBJECT (entry->priv->im_context),
+                    "input-hints", hints,
+                    NULL);
+
+      g_object_notify (G_OBJECT (entry), "input-hints");
+  }
+}
+
+GtkInputHints
+gtk_entry_get_input_hints (GtkEntry *entry)
+{
+  GtkInputHints hints;
+
+  g_return_val_if_fail (GTK_IS_ENTRY (entry), GTK_INPUT_HINT_NONE);
+
+  g_object_get (G_OBJECT (entry->priv->im_context),
+                "input-hints", &hints,
+                NULL);
+
+  return hints;
+}
index 1d44ae9aa0aa8eb4acc07d7f11dd2443ee36f1da..86efd7e098d96534b32aa0d649397a9ce097555f 100644 (file)
@@ -277,6 +277,18 @@ gboolean    gtk_entry_im_context_filter_keypress         (GtkEntry             *
                                                           GdkEventKey          *event);
 void        gtk_entry_reset_im_context                   (GtkEntry             *entry);
 
+GDK_AVAILABLE_IN_3_6
+void            gtk_entry_set_input_purpose                  (GtkEntry             *entry,
+                                                              GtkInputPurpose       purpose);
+GDK_AVAILABLE_IN_3_6
+GtkInputPurpose gtk_entry_get_input_purpose                  (GtkEntry             *entry);
+
+GDK_AVAILABLE_IN_3_6
+void            gtk_entry_set_input_hints                    (GtkEntry             *entry,
+                                                              GtkInputHints         hints);
+GDK_AVAILABLE_IN_3_6
+GtkInputHints   gtk_entry_get_input_hints                    (GtkEntry             *entry);
+
 
 G_END_DECLS